/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoBaseDatos;
import java.sql.*;
/**
 *
 * @author Franklin
 */
public class GatewayPublicaciones {
    private ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
    private Connection conn = null;
    private Statement stm = null;
    
    public void AbrirConexion(){
        conn = establecerConexion.ConectarBD();
    }
    
    public boolean InsertarPublicaciones(String cedula, String nombre, String fecha, String sumario) throws SQLException{
        boolean insertar = false;
        insertar = this.VerificarCedula(cedula);
        if(insertar == true){
            insertar = false;
            this.AbrirConexion();
            int rowsEffected = 0;
            if (conn != null) {
                try {//se realiza el insert
                    stm = conn.createStatement();
                    String strSQL = "INSERT INTO Publicaciones VALUES ('"+nombre+"','"+fecha+"','"+sumario+"')";
                    String strSQL1 = "INSERT INTO realizaPublicaciones VALUES ('"+cedula+"','"+nombre+"','"+fecha+"')";
                    rowsEffected = stm.executeUpdate(strSQL);
                    rowsEffected += stm.executeUpdate(strSQL1);
                    if(rowsEffected==2){
                        insertar = true;
                    }else{
                        insertar=false;
                    }
                    //retorno = mapping.findForward(SUCCESS);
                }catch(SQLException ex){
                    //retorno = mapping.findForward(FALLACONEXION);
                    insertar = false;
                }
                conn.close();//cierra la conexion       
            }
        }
        return insertar;
    }
    
    public boolean InsertarReferencia(String nombreReferencia, String nombrePublicacion, String fechaPublicacion, String nombreRevista, String autores, String volumen, String numero) throws SQLException{
        boolean insertar = false;
        insertar = this.VerificarPublicacion(nombrePublicacion, fechaPublicacion);
        if(insertar == true){
            insertar = false;
            this.AbrirConexion();
            int rowsEffected = 0;
            if (conn != null) {
                try {//se realiza el insert
                    stm = conn.createStatement();
                    String strSQL = "INSERT INTO Referencias VALUES ('"+nombreReferencia+"','"+nombrePublicacion+"','"+fechaPublicacion+"','"+nombreRevista+"','"+autores+"','"+volumen+"','"+numero+"')";
                    //String strSQL1 = "INSERT INTO realizaPublicaciones VALUES ('"+cedula+"','"+nombre+"','"+fecha+"')";
                    rowsEffected = stm.executeUpdate(strSQL);
                    //rowsEffected += stm.executeUpdate(strSQL1);
                    if(rowsEffected==1){
                        insertar = true;
                    }else{
                        insertar=false;
                    }
                    //retorno = mapping.findForward(SUCCESS);
                }catch(SQLException ex){
                    //retorno = mapping.findForward(FALLACONEXION);
                    insertar = false;
                }
                conn.close();//cierra la conexion       
            }
        }
        return insertar;
    }
    
    public boolean VerificarPublicacion(String nombrePublicacion, String fechaPublicacion){
        boolean existe = false;
     try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select nombrePublicacion from Publicaciones where nombrePublicacion ='"+nombrePublicacion+"' && fechaPublicacion='"+fechaPublicacion+"'");
             while (rs.next()&&existe==false){
                 existe = true;
             }
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
     return existe;
    }

    public boolean VerificarCedula(String cedula){
     boolean existe = false;
     try{
         conn = establecerConexion.ConectarBD();
         if(conn != null){//si tenemos conexion
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select nombre from Profesor where cedula ='"+cedula+"'");
             while (rs.next()&&existe==false){
                 existe = true;
             }   
             rs.close();
             st.close();
             conn.close();
         }
      }catch (Exception e){
         e.printStackTrace();
      }
     return existe;
    }
    
}//fin clase
